#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Nov  6 00:08:02 2019

@author: zjueman
"""

#1. 引入类库 
from numpy import random, dot, exp, array

#2. 加载数据
X = array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]])
y = array([[0,1,1,0]]).T

#3. 设置随机权重
random.seed(1)
weights = random.random((3,1)) * 2 - 1

#4. 循环
for it in range(10000):
    #利用矩阵点乘一次性计算4个z出来
    z = dot(X, weights)
    #使用Sigmoid函数，计算最终的output
    output = 1/(1+exp(-z))
    
    #看看我们计算出来的和实际发生的有多大误差
    error = y - output
    
    #计算斜率
    slope = output * (1-output)
    
    #计算增量
    delta = error * slope
    #print(delta)
    
    #更新权重，针对每一个系数，要更新的值就是：每个样本的输入值x增量之和。
    print(weights)
    weights = weights + dot(X.T, delta)

print(weights)    
